package com.openlogic.logic.mapper.logic;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.mybatisflex.core.BaseMapper;
import com.openlogic.api.logic.dto.RuleModelDto;
import com.openlogic.api.logic.dto.RuleSqlModelDto;
import com.openlogic.api.logic.entity.RuleModel;

/**
* @ClassName: RuleModelMapper
* @Description: 规则变量Mapper接口
* @author weiyongpeng
* @date 2024年7月14日 上午9:40:36
 */
public interface RuleModelMapper extends BaseMapper<RuleModel>{
	

	/**
	* 描述：查询公共参数列表
	* @Title: findCommonRuleParams
	* @param params
	* @return
	* @author weiyongpeng
	* @date  2024年9月15日 下午8:32:38
	 */
	List<Map<String, Object>> findCommonRuleParams(Map<String, Object> params);
	
	/**
	* 描述：决策调试获取参数
	* @Title: findByDebugRuleParams
	* @param params
	* @return
	* @author weiyongpeng
	* @date  2024年10月28日 下午4:35:28
	 */
	List<Map<String, Object>> findByDebugRuleParams(Map<String, Object> params);

	/**
	* 描述：根据参数查询规则设计里的参数
	* @Title: findRuleDesignParam
	* @param params
	* @return
	* @author weiyongpeng
	* @date  2024年9月16日 上午10:15:22
	 */
	List<RuleModelDto> findRuleDesignParam(Map<String, Object> params);
	
	/**
	* 描述：根据规则id查询所有的参数
	* @Title: findModelsByRuleId
	* @param ruleModelId
	* @return
	* @author weiyongpeng
	* @date  2024年9月20日 下午2:58:35
	 */
	List<RuleModel> findModelsByRuleId(@Param("ruleModelId") String ruleModelId);
	
	/**
	* 描述：根据sql参数名字查询sql的参数信息
	* @Title: findSqlParamByName
	* @param sqlParamName
	* @return
	* @author weiyongpeng
	* @date  2024年12月1日 上午9:50:59
	 */
	RuleSqlModelDto findSqlParamByName(@Param("name") String sqlParamName);
	
	/**
	* 描述：查询非决策流使用参数
	* @Title: findRuleParamForH
	* @param params
	* @return
	* @author weiyongpeng
	* @date  2024年12月31日 上午8:17:39
	 */
	List<RuleModel> findRuleParamForH(Map<String, Object> params);
	
	/**
	* 描述：批量新增
	* @Title: insertBatch
	* @param ruleModels
	* @author weiyongpeng
	* @date  2024年7月16日 下午7:17:59
	 */
	void insertBatchCustom(@Param("list") List<RuleModel> ruleModels);

	/**
	* 描述：删除数据
	* @Title: deleteByModelId
	* @param id
	* @return
	* @author weiyongpeng
	* @date  2024年7月16日 下午6:50:00
	 */
	int deleteByModelId(@Param("id") String id);

	/**
	* 描述：根据规则key删除
	* @Title: deleteByModelKey
	* @param ruleModelkey
	* @return
	* @author weiyongpeng
	* @date  2024年7月16日 下午7:11:11
	 */
	int deleteByModelKey(@Param("ruleModelId") String ruleModelId);

	/**
	* 描述：校验公共参数是否被规则所引用
	* @Title: checkIsLinkModel
	* @param id
	* @return
	* @author weiyongpeng
	* @date  2024年9月15日 下午9:03:57
	 */
	int checkIsLinkModel(@Param("id") String id);

}
